home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / Port.hu.ifs < prev    next >
Text File  |  2005-03-18  |  13KB  |  410 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=Peter Varju (<link>varjupe@freemail.hu</link>)
  8. Title=port.hu
  9. Description=Imports hungarian titles and description from port.hu site
  10. Site=www.port.hu
  11. Language=HU
  12. Version=2.0
  13. Requires=3.5.0
  14. Comments=
  15. License=This program is free software; you can redistribute it and/or modify it under the  terms of the GNU General Public License as published by the Free Software Foundation;  either version 2 of the License, or (at your option) any later version. |
  16. GetInfo=1
  17.  
  18. [Options]
  19.  
  20. ***************************************************)
  21.  
  22. program IMDb;
  23.  
  24. var
  25.   MovieName: string;
  26.   BeginPos, EndPos: Integer;
  27.  
  28. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  29. var
  30.   i: Integer;
  31. begin
  32.   result := -1;
  33.   if StartAt < 0 then
  34.     StartAt := 0;
  35.   for i := StartAt to List.Count-1 do
  36.     if Pos(Pattern, List.GetString(i)) <> 0 then
  37.     begin
  38.       result := i;
  39.       Break;
  40.     end;
  41. end;
  42.  
  43. procedure AnalyzePage(Address: string);
  44. var
  45.   Page: TStringList;
  46. begin
  47.   Page := TStringList.Create;
  48.   Page.Text := GetPage(Address);
  49.  
  50.   if pos('Nincs ilyen cφm√ film', Page.Text) <> 0 then
  51.      showmessage('Nincs ilyen cφm√ film a PORT adatbßzisban.')
  52.   else begin
  53.     if pos('<center>', Page.Text) <> 0 then begin
  54.       AnalyzeMoviePage(Page);
  55.     end else begin
  56.       PickTreeClear;
  57.       //AddMoviesTitles(Page,'/pls/ci/cinema.index_htm');
  58.       AddMoviesTitles(Page,'/pls/fi/films.film_page');
  59.       if PickTreeExec(Address) then begin
  60.         AnalyzePage(Address);
  61.         end;
  62.     end;
  63.   end;
  64.   Page.Free;
  65. end;
  66.  
  67. procedure AnalyzeMoviePage(Page: TStringList);
  68. var
  69.   Line, Temp, Value, Value2, FullValue, CommentString, Lang: string;
  70.   LineNr: Integer;
  71.   BeginPos, EndPos: Integer;
  72. begin
  73.  
  74.   //hungarian title
  75.   LineNr := FindLine('<center>', Page, 0);
  76.   if LineNr > -1 then
  77.   begin
  78.     Line := Page.GetString(LineNr);
  79.     BeginPos := pos('">', Line)+2;
  80.     Delete(Line, 1, BeginPos);
  81.     BeginPos := pos('">', Line)+2;
  82.     EndPos := pos('</font>', Line);
  83.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  84.     SetField(fieldTranslatedTitle, Value);
  85.   end;
  86.  
  87.   //original title
  88.   BeginPos := EndPos+1;
  89.   Delete(Line, 1, BeginPos);
  90.   BeginPos := pos('size="2">(', Line)+10;
  91.   EndPos := pos(')', Line);
  92.   Value := copy(Line, BeginPos, EndPos - BeginPos);
  93.   HTMLRemoveTags(Value);
  94.   SetField(fieldOriginalTitle, Value);
  95.  
  96.   //year
  97.   LineNr := FindLine('perc, ', Page, 0);
  98.   if LineNr > -1 then
  99.   begin
  100.     Line := Page.GetString(LineNr);
  101.     BeginPos := pos('perc, ', Line)+6;
  102.     Value := copy(Line, BeginPos, 4);
  103.     Value2 := Copy(Value, 1, 2);
  104.     if (Value2='19') or (Value2='20') or (Value2='21') then
  105.       SetField(fieldYear, Value);
  106.   end;
  107.  
  108.   //category, country
  109.   LineNr := FindLine('"btxt">', Page, 0);
  110.   if LineNr > -1 then
  111.   begin
  112.     Line := Page.GetString(LineNr);
  113.     BeginPos := pos('"btxt">', Line)+7;
  114.     EndPos := pos('</span>', Line);
  115.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  116.     Value := stringReverse(Value);
  117.  
  118.     Value2:=Value;
  119.  
  120.     //cutting year
  121.     EndPos := pos(',', Value);
  122.     Delete(Value, EndPos, Length(Value)-1);
  123.     Value := stringReverse(Value);
  124.     Value := Copy(trim(Value), 0, 2);
  125.     if (Value='19') or (Value='20') or (Value='21') then
  126.       Value2:=Copy(Value2, 7, Length(Value2));
  127.  
  128.     //movie length
  129.     Value := Value2;
  130.     if Copy(Value,0,5)='crep ' then begin
  131.       EndPos := pos(',', Value);
  132.       Value:=Copy(Value, 6, EndPos-7);
  133.       Value:=stringReverse(Value);
  134.       SetField(fieldLength, Value);
  135.     end;
  136.  
  137.     //cutting time
  138.     Value := Value2;
  139.     if Copy(Value,0,5)='crep ' then begin
  140.       EndPos := pos(',', Value);
  141.       Delete(Value, 1, EndPos);
  142.     end;
  143.     Value := stringReverse(Value);
  144.  
  145.     //cutting colors
  146.     if pos('szφnes, fekete-fehΘr ',Value)=1 then begin
  147.       Delete(Value, 1, 21);
  148.     end else
  149.       if (pos('fekete-fehΘr ',Value)=1) or (pos('szφnes ',Value)=1) then begin
  150.         EndPos := pos(' ', Value);
  151.         Delete(Value, 1, EndPos);
  152.       end;
  153.  
  154.     //cutting language type
  155.     if (pos('magyarul beszΘl⌡ ',Value)=1) then begin
  156.       Delete(Value, 1, 17);
  157.     end;
  158.     if (pos('hangalßmondßsos ',Value)=1) then begin
  159.       Delete(Value, 1, 16);
  160.     end;
  161.     if (pos('feliratos ',Value)=1) then begin
  162.       Delete(Value, 1, 10);
  163.     end;
  164.     if (pos('nΘmafilm ',Value)=1) then begin
  165.       Delete(Value, 1, 9);
  166.     end;
  167.  
  168.     Value2:=Copy(Value,0,pos(' ',Value)-1);
  169.     Value:=Copy(Value,pos(' ',Value)+1,Length(Value));
  170.  
  171.     SetField(fieldCategory, AnsiUpFirstLetter(Value));
  172.     SetField(fieldCountry, AnsiUpFirstLetter(Value2));
  173.   end;
  174.  
  175.   //actors
  176.   LineNr := FindLine('<b>szerepl⌡(k):', Page, 0);
  177.   if LineNr > -1 then
  178.   begin
  179.     Line := Page.GetString(LineNr);
  180.     BeginPos := pos('<b>szerepl⌡(k): </b><br>', Line)+24;
  181.     Delete(Line, 1, BeginPos-1);
  182.     EndPos := pos('</span>', Line)-1;
  183.     Value := copy(Line, 0, EndPos);
  184.     Value := StringReplace(Value, '<br>', #13#10);
  185.     HTMLRemoveTags(Value);
  186.     SetField(fieldActors, Value);
  187.   end;
  188.  
  189.   //director
  190.   LineNr := FindLine('<strong>rendez⌡: </strong>', Page, 0);
  191.   if LineNr > -1 then
  192.   begin
  193.     Line := Page.GetString(LineNr);
  194.     BeginPos := pos('<strong>rendez⌡: </strong>', Line)+31;
  195.     Delete(Line, 1, BeginPos-1);
  196.     EndPos := pos('<br>', Line)-1;
  197.     Value := copy(Line, 0, EndPos);
  198.     HTMLRemoveTags(Value);
  199.     SetField(fieldDirector, Value);
  200.   end;
  201.  
  202.   //description
  203.   LineNr := FindLine('<b>szavazok</b></a> rß!', Page, 0)+1;
  204.   if LineNr > -1 then
  205.   begin
  206.     Line := Page.GetString(LineNr);
  207.     BeginPos := pos('size="2">', Line)+9;
  208.     Delete(Line, 1, BeginPos-1);
  209.     EndPos := pos('</font>', Line)-1;
  210.     Value := copy(Line, 0, EndPos);
  211.     Value := StringReplace(Value, '<BR>', #13#10);
  212.     HTMLRemoveTags(Value);
  213.     SetField(fieldDescription, Value);
  214.   end;
  215.  
  216.   //producer
  217.   LineNr := FindLine('<strong>producer: </strong>', Page, 0);
  218.   if LineNr > -1 then
  219.   begin
  220.     Line := Page.GetString(LineNr);
  221.     BeginPos := pos('<strong>producer: </strong>', Line)+32;
  222.     Delete(Line, 1, BeginPos-1);
  223.     EndPos := pos('<br>', Line)-1;
  224.     Value := copy(Line, 0, EndPos);
  225.     HTMLRemoveTags(Value);
  226.     SetField(fieldProducer, Value);
  227.   end;
  228.  
  229.   //comments
  230.   CommentString := '';
  231.   //comments - screenwriter
  232.   LineNr := FindLine('<strong>forgat≤k÷nyvφr≤: </strong>', Page, 0);
  233.   if LineNr > -1 then
  234.   begin
  235.     Line := Page.GetString(LineNr);
  236.     BeginPos := pos('<strong>forgat≤k÷nyvφr≤: </strong>', Line)+39;
  237.     Delete(Line, 1, BeginPos-1);
  238.     EndPos := pos('<br>', Line)-1;
  239.     Value := copy(Line, 0, EndPos);
  240.     HTMLRemoveTags(Value);
  241.     if Value<>'' then
  242.       CommentString := CommentString+'Forgat≤k÷nyvφr≤: '+Value+#13#10;
  243.   end;
  244.  
  245.   //comments - writer
  246.   LineNr := FindLine('<strong>φr≤: </strong>', Page, 0);
  247.   if LineNr > -1 then
  248.   begin
  249.     Line := Page.GetString(LineNr);
  250.     BeginPos := pos('<strong>φr≤: </strong>', Line)+27;
  251.     Delete(Line, 1, BeginPos-1);
  252.     EndPos := pos('<br>', Line)-1;
  253.     Value := copy(Line, 0, EndPos);
  254.     HTMLRemoveTags(Value);
  255.     if Value<>'' then
  256.       CommentString := CommentString+'═r≤: '+Value+#13#10;
  257.   end;
  258.  
  259.   //comments - music
  260.   LineNr := FindLine('<strong>zene: </strong>', Page, 0);
  261.   if LineNr > -1 then
  262.   begin
  263.     Line := Page.GetString(LineNr);
  264.     BeginPos := pos('<strong>zene: </strong>', Line)+28;
  265.     Delete(Line, 1, BeginPos-1);
  266.     EndPos := pos('<br>', Line)-1;
  267.     Value := copy(Line, 0, EndPos);
  268.     HTMLRemoveTags(Value);
  269.     if Value<>'' then
  270.       CommentString := CommentString+'Zene: '+Value+#13#10;
  271.   end;
  272.  
  273.   //comments - cameraman
  274.   LineNr := FindLine('<strong>operat⌡r: </strong>', Page, 0);
  275.   if LineNr > -1 then
  276.   begin
  277.     Line := Page.GetString(LineNr);
  278.     BeginPos := pos('<strong>operat⌡r: </strong>', Line)+32;
  279.     Delete(Line, 1, BeginPos-1);
  280.     EndPos := pos('<br>', Line)-1;
  281.     Value := copy(Line, 0, EndPos);
  282.     HTMLRemoveTags(Value);
  283.     if Value<>'' then
  284.       CommentString := CommentString+'Operat⌡r: '+Value+#13#10;
  285.   end;
  286.  
  287.   //comments - costum designer
  288.   LineNr := FindLine('<strong>jelmeztervez⌡: </strong>', Page, 0);
  289.   if LineNr > -1 then
  290.   begin
  291.     Line := Page.GetString(LineNr);
  292.     BeginPos := pos('<strong>jelmeztervez⌡: </strong>', Line)+37;
  293.     Delete(Line, 1, BeginPos-1);
  294.     EndPos := pos('<br>', Line)-1;
  295.     Value := copy(Line, 0, EndPos);
  296.     HTMLRemoveTags(Value);
  297.     if Value<>'' then
  298.       CommentString := CommentString+'Jelmeztervez⌡: '+Value+#13#10;
  299.   end;
  300.  
  301.   //comments - cutter
  302.   LineNr := FindLine('<strong>vßg≤: </strong>', Page, 0);
  303.   if LineNr > -1 then
  304.   begin
  305.     Line := Page.GetString(LineNr);
  306.     BeginPos := pos('<strong>vßg≤: </strong>', Line)+28;
  307.     Delete(Line, 1, BeginPos-1);
  308.     EndPos := pos('<br>', Line)-1;
  309.     Value := copy(Line, 0, EndPos);
  310.     HTMLRemoveTags(Value);
  311.     if Value<>'' then
  312.       CommentString := CommentString+'Vßg≤: '+Value+#13#10;
  313.   end;
  314.  
  315.   SetField(fieldComments, CommentString);
  316.  
  317.   //picture
  318.   LineNr := FindLine('<img src="/mozi/kep_film', Page, 0);
  319.   if LineNr = -1 then LineNr := FindLine('<img src="/picture/instance_2/', Page, 0);
  320.   if LineNr > -1 then
  321.   begin
  322.     Line := Page.GetString(LineNr);
  323.     BeginPos := pos('<img src="', Line) + 10;
  324.     Delete(Line, 1, BeginPos-1);
  325.     EndPos := pos('"', Line);
  326.     Value := copy(Line, 1, EndPos - 1);
  327.     GetPicture(Value); // False = do not store picture externally ; store it in the catalog file
  328.   end;
  329. //Csak nßlam van:
  330.   //SetField(fieldLanguages, 'Magyar');
  331.  
  332.   //DisplayResults;
  333. end;
  334.  
  335. Function stringReverse(S : String): String;
  336. Var
  337.    i : Integer;
  338. Begin
  339.    Result := '';
  340.    For i := Length(S) DownTo 1 Do
  341.    Begin
  342.      Result := Result + Copy(S,i,1) ;
  343.    End;
  344. End;
  345.  
  346. procedure AddMoviesTitles(Page: TStringList; Tag: string);
  347. var
  348.   Line: string;
  349.   LineNr: Integer;
  350.   MovieTitle, OriTitle, MovieAddress, Year: string;
  351.   StartPos, EndPos: Integer;
  352. begin
  353.   LineNr := FindLine(tag, Page, 0);
  354.   if LineNr > -1 then
  355.   begin
  356.     PickTreeAdd('Talßlatok:', '');
  357.     Line := Page.GetString(LineNr);
  358.     repeat
  359.       StartPos := pos('href="', Line) + 5;
  360.       Delete(Line, 1, StartPos);
  361.       MovieAddress := Copy(Line, 1, pos('" target="', Line) - 1);
  362.  
  363.       //ShowMessage ('MovieAddress:' + MovieAddress);
  364.       //StartPos := pos('i_body=', MovieAddress) + 7;
  365.       //EndPos := pos('&i_title=', MovieAddress);
  366.       //MovieAddress:=Copy(Line, StartPos, EndPos-StartPos);
  367.       //MovieAddress:=StringReplace(MovieAddress, '@@@', '&');
  368.       //MovieAddress:=StringReplace(MovieAddress, '@@', '?');
  369.  
  370.       StartPos := Pos('target="_top">', Line) + 14;
  371.       MovieTitle := Copy(Line, StartPos, Pos('</a>', Line) - StartPos);
  372.       StartPos := Pos('</a>', Line) + 6;
  373.       OriTitle := Copy(Line, StartPos, Pos(')</span>', Line) - StartPos);
  374.       StartPos := Pos(') </span>', Line) - 4;
  375.       Year := Copy(Line, StartPos, 4);
  376.       if (Copy(Year,0,2)='19') or (Copy(Year,0,2)='20') or (Copy(Year,0,2)='21') then
  377.         Year := Copy(Line, StartPos, 4)
  378.       else
  379.         Year := '';
  380.     MovieTitle:=MovieTitle+' ('+OriTitle+'), '+Year;
  381.       HTMLDecode(Movietitle);
  382.       PickTreeAdd(MovieTitle, 'http://www.port.hu' + MovieAddress);
  383.         LineNr := FindLine(tag, Page, LineNr+1);
  384.         if LineNr > -1 then
  385.         Line := Page.GetString(LineNr)
  386.         else
  387.         Line := '';
  388.     until Line = '';
  389.   end;
  390. end;
  391.  
  392. begin
  393.   if CheckVersion(3,5,0) then
  394.   begin
  395.     MovieName := GetField(fieldOriginalTitle);
  396.     MovieName := StringReplace(MovieName,' - cd1','');
  397.     MovieName := StringReplace(MovieName,' - CD1','');
  398.     MovieName := StringReplace(MovieName,'-CD1','');
  399.     MovieName := StringReplace(MovieName,'-cd1','');
  400.     if MovieName = '' then
  401.       MovieName := GetField(fieldTranslatedTitle);
  402.     if Input('Port.hu import', 'A keresend⌡ film cφme:', MovieName) then
  403.     begin
  404.       AnalyzePage('http://www.port.hu/pls/ci/cinema.film_list?i_film_title='+UrlEncode(MovieName)+'&i_city_id=3372&i_county_id=-1');
  405.     end;
  406.   end else
  407.     ShowMessage('A szkript futtatßsßhoz szⁿksΘg van az Ant Movie Catalog leg·jabb verzi≤jßra (De legalßbb a 3.5.0-esre) !');
  408. end.
  409.  
  410.